<?php

/**
 * 这是函数库(hanshu)，常用函数写在这
 */


if (!function_exists('tiaoshi')) {
    /**
     * 浏览器友好的变量输出
     * @param mixed $var 变量
     * @param boolean $echo 是否输出 默认为True 如果为false 则返回输出字符串
     * @param string $label 标签 默认为空
     * @param boolean $strict 是否严谨 默认为true
     * @return void|string
     */
    function tiaoshi($var, $echo=true, $label=null, $strict=true) {
        $label = ($label === null) ? '' : rtrim($label) . ' ';
        if (!$strict) {
            if (ini_get('html_errors')) {
                $output = print_r($var, true);
                // $output = '<pre>' . $label . htmlspecialchars($output, ENT_QUOTES) . '</pre>';
            } else {
                $output = $label . print_r($var, true);
            }
        } else {
            ob_start();
            var_dump($var);
            $output = ob_get_clean();
            if (!extension_loaded('xdebug')) {
                // $output = preg_replace("/\]\=\>\n(\s+)/m", '] => ', $output);
                // $output = '<pre>' . $label . htmlspecialchars($output, ENT_QUOTES) . '</pre>';
            }
        }
        if ($echo) {
            echo($output);
            return null;
        }else
            return $output;
    }
}


if (!function_exists('fanhui')) {
    /**
     * 返回json数据
     * @param mixed $shuju 数组或对象等可以被转为json的
     * @param string $xinxi 提示信息（msg）
     * @param int $status 状态
     */
    function fanhui($xinxi='ok', $shuju, $status=0) {
        $ret = [
            'status' => $status,
            'data'=> $shuju,
            'msg' => $xinxi
        ];
        $http = [
            100 => "HTTP/1.1 100 Continue",
            101 => "HTTP/1.1 101 Switching Protocols",
            200 => "HTTP/1.1 200 OK",
            201 => "HTTP/1.1 201 Created",
            202 => "HTTP/1.1 202 Accepted",
            203 => "HTTP/1.1 203 Non-Authoritative Information",
            204 => "HTTP/1.1 204 No Content",
            205 => "HTTP/1.1 205 Reset Content",
            206 => "HTTP/1.1 206 Partial Content",
            300 => "HTTP/1.1 300 Multiple Choices",
            301 => "HTTP/1.1 301 Moved Permanently",
            302 => "HTTP/1.1 302 Found",
            303 => "HTTP/1.1 303 See Other",
            304 => "HTTP/1.1 304 Not Modified",
            305 => "HTTP/1.1 305 Use Proxy",
            307 => "HTTP/1.1 307 Temporary Redirect",
            400 => "HTTP/1.1 400 Bad Request",
            401 => "HTTP/1.1 401 Unauthorized",
            402 => "HTTP/1.1 402 Payment Required",
            403 => "HTTP/1.1 403 Forbidden",
            404 => "HTTP/1.1 404 Not Found",
            405 => "HTTP/1.1 405 Method Not Allowed",
            406 => "HTTP/1.1 406 Not Acceptable",
            407 => "HTTP/1.1 407 Proxy Authentication Required",
            408 => "HTTP/1.1 408 Request Time-out",
            409 => "HTTP/1.1 409 Conflict",
            410 => "HTTP/1.1 410 Gone",
            411 => "HTTP/1.1 411 Length Required",
            412 => "HTTP/1.1 412 Precondition Failed",
            413 => "HTTP/1.1 413 Request Entity Too Large",
            414 => "HTTP/1.1 414 Request-URI Too Large",
            415 => "HTTP/1.1 415 Unsupported Media Type",
            416 => "HTTP/1.1 416 Requested range not satisfiable",
            417 => "HTTP/1.1 417 Expectation Failed",
            500 => "HTTP/1.1 500 Internal Server Error",
            501 => "HTTP/1.1 501 Not Implemented",
            502 => "HTTP/1.1 502 Bad Gateway",
            503 => "HTTP/1.1 503 Service Unavailable",
            504 => "HTTP/1.1 504 Gateway Time-out"
        ]; 
        header('Content-Type:application/json; charset=utf-8');
        header($http[200]);
        $json = json_encode($ret,JSON_UNESCAPED_UNICODE);
        echo $json;
        die;
    }
}


if (!function_exists('chucuo')) {
    /**
     * 返回错误提示
     * @param string $xinxi 提示信息（msg）
     */
    function chucuo($xinxi="出错了！", $shuju = []) {
        fanhui($xinxi, $shuju, 1);
    }
}


if (!function_exists('peizhi')) {
    /**
     * 获取配置数据
     * @param mixed $shuju 数组或对象等可以被转为json的
     * @param string $xinxi 提示信息（msg）
     * @param int $code http状态码
     */
    function peizhi() {
        $pz = include('./peizhi.php');
        return $pz;
    }
}

if (!function_exists('rizhi')) {
    /**
     * 日志记录
     * 自动识别对象和数组数据并转json输出，字符串直接输出
     */
    function rizhi($obj, $logType = Log::NOTICE, $other = null){
        $logger = null;
        if (!$GLOBALS['$LOG']) {
            $logger = Log::getInstance(array(
                'LOG_FILE'=>peizhi()['sys']['log'], 
                'LOG_LEVEL'=>75
            ));
            $GLOBALS['$LOG'] = $logger;
        } else {
            $logger = $GLOBALS['$LOG'];
        }
        $string = '';
        switch (gettype($obj)) {
            case 'array':
            case 'object':
                $string = json_encode($obj);
                break;
            default:
            $string = $obj;
                break;
        }

        $logger->logMessage($string, $logType, $other);
    }
}

